home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / update-notifier / apt-cdrom-check < prev    next >
Text File  |  2009-10-15  |  2KB  |  96 lines

  1. #!/bin/sh
  2. #
  3. # helper to check if we actually have a ubuntu CD
  4. #
  5. # Returncode:
  6. # 0 - no ubuntu CD
  7. # 1 - CD with packages 
  8. # 2 - dist-upgrader CD
  9. # 3 - addon CD
  10. # 4 - aptoncd media
  11. # (if the returncodes change, make sure to update src/hal.c)
  12.  
  13. mount_point="$1"
  14. upgrader_dir="$mount_point/dists/stable/main/dist-upgrader/binary-all/"
  15. addon_dir="$mount_point/app-install/"
  16. aptoncd_file="$mount_point/aptoncd.info"
  17.  
  18. # sanity checks
  19. if [ -z "$mount_point" ]; then
  20.     exit 0
  21. fi
  22.  
  23. if [ -f "$aptoncd_file" ]; then
  24.     exit 4
  25. fi
  26.  
  27. if [ ! -d "$mount_point/ubuntu" ]; then
  28.     exit 0
  29. fi
  30.  
  31. # check if there are "Packages" files on the cd (and ignore the 
  32. # debian-installer dir)
  33. find "$mount_point/dists/"  -name "Packages.gz" | grep -q -v debian-installer
  34.  
  35. # 1 means "no lines where selected" in grep (no Packages file but the 
  36. # debian-installer ones)
  37. if [ $? -eq 1 ]; then
  38.     exit 0
  39. fi
  40.  
  41. # get some apt-config vars
  42. label_start=0
  43. cdrom_id=""
  44.  
  45. apt_dir="/"
  46. apt_state_dir="var/lib/apt/"
  47. apt_cdrom_list="cdrom.list"
  48. eval $(apt-config shell apt_dir Dir \
  49.                         apt_state_dir Dir::State \
  50.                         apt_cdrom_list Dir::State::cdroms)
  51.  
  52.  
  53.  
  54. # identifying ... [afkdsjaf] line
  55. line=$(apt-cdrom -d="$1" -m ident|grep "\[.*\]")
  56.  
  57. # remove the stuff before "Identifiyng... [dasjflkd]" -> "dasjflkd"
  58. line=${line%]*}
  59. cdrom_id=${line#*\[}
  60.  
  61. if [ -z "$cdrom_id" ]; then
  62.     # something bad happend here, we return "not yet scanned" as 
  63.     # fallback (because we are cheap)
  64.     return 1
  65. fi
  66.  
  67. # we always return ADDON cd regardless if we know it already or not
  68. # the rational is that it easier for people this way and less 
  69. # confusing
  70. if [ -d "$addon_dir" ] && [ -x /usr/bin/gnome-app-install ]; then
  71.     exit 3
  72. fi
  73.  
  74. # [cdrom-id] -> cdrom-id  
  75. if grep -s -q "$cdrom_id"  $apt_dir$apt_state_dir$apt_cdrom_list; then
  76.     # already in sources.list, ignore
  77.     exit 0
  78. fi
  79.  
  80. # so this is a CD we don't know yet and it has packages. good!
  81.  
  82. # now check if it contains a signed dist-upgrader
  83. if [ -d "$upgrader_dir" ]; then
  84.     # ok, we have one, now check the authentication 
  85.     GPG="gpgv --ignore-time-conflict --keyring /etc/apt/trusted.gpg"
  86.     if $GPG "$upgrader_dir"/*.tar.gz.gpg "$upgrader_dir"/*.tar.gz; then
  87.     # verified ok, we have a valid upgrader, if it was not ok, the
  88.     # fallback to the end is ok because we still have packages on it
  89.     exit 2
  90.     fi
  91. fi
  92.  
  93. # we got a ubuntu CD with packages
  94. exit 1
  95.